package user_center.user.controller;


import cwb.consts.RequestPrefix;
import cwb.utils.JwtUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import user_center.user.pojo.SystemUser;
import user_center.user.service.impl.SystemUserServiceImpl;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author Ezio.Auditore
 * @since 2021-12-20
 */
@Slf4j
@RestController
@RequestMapping(RequestPrefix.API + "/system")
@Api(value = "系统信息", tags = "系统信息", description = "系统信息")
public class SystemInfoController {

    @PostMapping("/getSystem")
    @ApiOperation(value = "系统信息查询", notes = "系统信息查询", response = String.class)
    public String getUser(HttpServletRequest request) {
        String userName = JwtUtil.verifyJWT(request.getHeader("token"));
        log.info(userName + "在调用系统信息查询接口");
        return getSystemInfo();
    }

    private static String getSystemInfo() {
        StringBuffer info = new StringBuffer();
        // java版本号
        info.append("java版本号：" + System.getProperty("java.version"));
        // Java提供商名称
        info.append("\nJava提供商名称：" + System.getProperty("java.vendor"));
        // Java提供商网站
        info.append("\nJava提供商网站：" + System.getProperty("java.vendor.url"));
        // Java，哦，应该是jre目录
        info.append("\njre目录：" + System.getProperty("java.home"));
        // Java虚拟机规范版本号
        info.append("\nJava虚拟机规范版本号：" + System.getProperty("java.vm.specification.version"));
        // Java虚拟机规范提供商
        info.append("\nJava虚拟机规范提供商：" + System.getProperty("java.vm.specification.vendor"));
        // Java虚拟机规范名称
        info.append("\nJava虚拟机规范名称：" + System.getProperty("java.vm.specification.name"));
        // Java虚拟机版本号
        info.append("\nJava虚拟机版本号：" + System.getProperty("java.vm.version"));
        // Java虚拟机提供商
        info.append("\nJava虚拟机提供商：" + System.getProperty("java.vm.vendor"));
        // Java虚拟机名称
        info.append("\nJava虚拟机名称：" + System.getProperty("java.vm.name"));
        // Java规范版本号
        info.append("\nJava规范版本号：" + System.getProperty("java.specification.version"));
        // Java规范提供商
        info.append("\nJava规范提供商：" + System.getProperty("java.specification.vendor"));
        // Java规范名称
        info.append("\nJava规范名称：" + System.getProperty("java.specification.name"));
        // Java类版本号
        info.append("\nJava类版本号：" + System.getProperty("java.class.version"));
        // Java类路径
        info.append("\nJava类路径：" + System.getProperty("java.class.path"));
        // Java lib路径
        info.append("\nJava lib路径：" + System.getProperty("java.library.path"));
        // Java输入输出临时路径
        info.append("\nJava输入输出临时路径：" + System.getProperty("java.io.tmpdir"));
        // Java编译器
        info.append("\nJava编译器：" + System.getProperty("java.compiler"));
        // Java执行路径
        info.append("\nJava执行路径：" + System.getProperty("java.ext.dirs"));
        // 操作系统名称
        info.append("\n操作系统名称：" + System.getProperty("os.name"));
        // 操作系统的架构
        info.append("\n操作系统的架构：" + System.getProperty("os.arch"));
        // 操作系统版本号
        info.append("\n操作系统版本号：" + System.getProperty("os.version"));
        // 文件分隔符
        info.append("\n文件分隔符：" + System.getProperty("file.separator"));
        // 路径分隔符
        info.append("\n路径分隔符：" + System.getProperty("path.separator"));
        // 直线分隔符
        info.append("\n直线分隔符：" + System.getProperty("line.separator"));
        // 用户名
        info.append("\n操作系统用户名：" + System.getProperty("user.name"));
        // 用户的主目录
        info.append("\n操作系统用户的主目录：" + System.getProperty("user.home"));
        // 当前程序所在目录
        info.append("\n当前程序所在目录：" + System.getProperty("user.dir"));
        return info.toString();
    }

    public static void main(String[] args) {
        System.out.println(getSystemInfo());
    }


}
